enum Flag{
    false,
    true,
    str='str',
    num = 0
}
interface A{
    num:Flag.num
}
let o:A={
    // num:0  //字符串无法赋值
    num:Flag.num
}
console.log(o)


// let  和 var 都是不允许的声明只能使用const

// 大多数情况下，枚举是十分有效的方案。 然而在某些情况下需求很严格。
//  为了避免在额外生成的代码上的开销和额外的非直接的对枚举成员的访问，
//  我们可以使用 const枚举。 常量枚举通过在枚举上使用 const修饰符来定义

// const 声明的枚举会被编译成常量，普通声明的枚举编译完后是个对象
// const enum Types{
//    No = "No",
//    Yes = 1,
// }                      
// 原文链接：https://blog.csdn.net/qq1195566313/article/details/122380754

// 反向映射
enum Type{
    success=1
    // success='1'      //字符串不能反向映射
}
let success:number = Type.success
let key = Type[success]
console.log(`key:${key}----value:${success}`)       //success--1